import axios from 'axios';
import addGoods from '../components/addGoods.vue'
// mixin， 这里主要处理供应商和零售商的耦合业务
export const mixin = {
  // 注册添加商品信息、食品详情子组件
  components: {
    addGoods,
    FoodDetail
  },
  // 接受传入的分页信息
  props: ['currPage', 'pageSize'],
  data() {
    return {
      popup: false, // 控制添加商品信息弹窗
      traceNumber: '', // 溯源码
      foodDetail: '', // 溯源食品信息
      foodList: [], // 食品信息列表
      popoverData: {}, // 弹窗食品信息数据
    }
  },
  computed: {
    // 当前页的数据渲染
    renderList() {
      return this.foodList.slice((this.currPage - 1) * this.pageSize, this.currPage * this.pageSize)
    }
  },
  mounted() {
    // 获取数据
    this.getData();
  },
  methods: {
    // 数据获取，根据 user 用户类型来分别获取供应商和零售商的数据
    getData() {
      let pathname = this.user === 1 ? 'distributing' : 'retailing';
      axios({
        method: 'get',
        url: `/${pathname}`
      })
        .then(ret => {
          this.foodList = ret.data
            .map(item => {
              let quality = item.quality === 0 ? '优质' : item.quality === 1 ? '合格' : '不合格'
              return ({
                ...item,
                date: this.$dateTime(item.timestamp),
                quality,
              })
            })
            .reverse();
          this.$emit('total', this.foodList.length);
        })
        .catch(err => {
          console.log(err)
        })
    },
    // 表格中食品详情弹窗
    handlePopover(data) {
      // 供应商已有的信息足有支持显示，不需要进行额外 http 请求
      if (this.user === 1) {
        this.popoverData = data;
        return;
      }
      // 零售商则需要额外发送 http　请求获取更多细节
      axios({
        method: 'get',
        url: `/food?traceNumber=${data.traceNumber}`
      })
        .then(ret => {
          this.popoverData = ret.data;
        })
        .catch(err => {
          console.log(err)
        })
    },
    // 处理添加商品信息
    addGoods() {
      if (!this.traceNumber) {
        this.$message.error('请输入溯源码');
        return;
      }
      axios({
        method: 'get',
        url: `/trace?traceNumber=${this.traceNumber}`
      })
        .then(ret => {
          this.foodDetail = ret.data || []
          this.popup = true;
        })
        .catch(err => {
          console.log(err)
        })
    },
    // 添加商品信息弹窗
    handlePopup(val) {
      this.popup = val;
    },
    // 添加商品信息提交，根据 user 进行不同的请求
    formSubmit(val) {
      let pathname = this.user === 1 ? 'adddistribution' : 'addretail';
      axios({
        method: 'post',
        url: `/${pathname}`,
        data: {
          ...val,
          quality: parseInt(val.quality),
          traceNumber: this.foodDetail[0].traceNumber
        }
      })
        .then(ret => {
          if (ret.data.ret !== 1) {
            this.$message({
              message: '提交失败',
              type: 'error',
              center: true
            });
            return
          }
          this.$message({
            message: '提交成功',
            type: 'success',
            center: true
          });
          this.getData();
        })
        .catch(err => {
          console.log(err)
        })
      this.popup = false;
    }
  }
}